﻿#region librerias
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Librerias;
#endregion

namespace eCampus
{
    /// <summary>
    /// Formulario Padre del administrador
    /// </summary>
    public partial class FormPadreAdministrador : Form
    {
        #region Datos

        int botonInhabilitado = 1;
        DateTime fechaSesion;

        FormPrincipalAdministrador fPrincipal = null;
        FormMensajeConsultar fMensajes = null;
        FormEstadisticasInformes fInformes = null;
        FormBuscaAvanzada fBuscaAvanzada = null;
        FormResultadoBuscaAvanzada fResultadosBuscaAvanzada = null;
        public FormUsuarioConsultar fUsuarioConsultar = null;
        public FormConsultarAsignaturasCreadas fAsignaturaCrear = null;
        //FormUsuarioConsultar fUsuarios = null;
        //FormAsignaturaConsultar fAsignaturas = null;

        ENUsuario adm;
        
        #endregion 

        #region Contructor
        public FormPadreAdministrador(ENUsuario admin)
        {
            adm = admin;
            fechaSesion = DateTime.Now;

            InitializeComponent();
            lanzarBuscaAvanzada();
            CargaPrincipal();            
            fBuscaAvanzada.Shown += new EventHandler(fBuscaAvanzada_Shown);
            
            fResultadosBuscaAvanzada.setFBuscador(fBuscaAvanzada);
            fBuscaAvanzada.setFResultados(fResultadosBuscaAvanzada);
        }
        #endregion

        #region Eventos de formularios hijos
        private void fBuscaAvanzada_Shown(Object sender, EventArgs e)
        {
            DeshabilitaBoton(6);
        }

        #endregion

        #region Gestion de botones
        //Gestión de botones
        void DeshabilitaBoton(int nuevo)
        {

            switch (botonInhabilitado)
            {
                case 1:
                    fPrincipal = null;
                    btPrincipal.Enabled = true;
                    botonInhabilitado = nuevo;
                    break;
                case 2:
                    btMensajes.Enabled = true;
                    botonInhabilitado = nuevo;
                    break;
                case 3:
                    btUsuarios.Enabled = true;
                    botonInhabilitado = nuevo;
                    break;
                case 4:
                    btAsignaturas.Enabled = true;
                    botonInhabilitado = nuevo;
                    break;
                case 5:
                 //   btInformes.Enabled = true;
                    botonInhabilitado = nuevo;
                    break;
                case 6:
                    btBusqueda.Enabled = true;
                    botonInhabilitado = nuevo;
                    break;
            }
            //Deshabilita nuevo
            switch (nuevo)
            {
                case 1:
                    btPrincipal.Enabled = false;
                    break;
                case 2:
                    btMensajes.Enabled = false;
                    break;
                case 3:
                    btUsuarios.Enabled = false;
                    break;
                case 4:
                    btAsignaturas.Enabled = false;
                    break;
                case 5:
                  //  btInformes.Enabled = false;
                    break;
                case 6:
                    btBusqueda.Enabled = false;
                    break;
            }

        }

        private void btHomeAdmin_Click(object sender, EventArgs e)
        {
            CargaPrincipal();
        }

        //Cuando le demos a "botón de mensajes"
        public void btMensajeAdmin_Click(object sender, EventArgs e)
        {

            if (fMensajes == null)
            {
                fMensajes = new FormMensajeConsultar(adm.Correo);
                fMensajes.MdiParent = this;
                fMensajes.Show();
                fMensajes.Dock = DockStyle.Fill;
            }
            else
            {
                fMensajes.Focus();
            }

            DeshabilitaBoton(2);
        }


        public void btUsuarios_Click(object sender, EventArgs e)
        {
            if (fUsuarioConsultar == null)
            {
                fUsuarioConsultar = new FormUsuarioConsultar();
                fUsuarioConsultar.MdiParent = this;
                fUsuarioConsultar.Show();
                fUsuarioConsultar.Dock = DockStyle.Fill;

            }
            else
            {
                fUsuarioConsultar.Focus();
            }

            DeshabilitaBoton(3);
        }


        public void btAsignaturas_Click(object sender, EventArgs e)
        {


            if (fAsignaturaCrear == null)
            {
                fAsignaturaCrear = new FormConsultarAsignaturasCreadas();
                fAsignaturaCrear.MdiParent = this;
                fAsignaturaCrear.Show();
                fAsignaturaCrear.Dock = DockStyle.Fill;
            }
            else
            {
                fAsignaturaCrear.Focus();
            }

            DeshabilitaBoton(4);
        }

        private void btInformes_Click(object sender, EventArgs e)
        {

            if (fInformes == null)
            {
                fInformes = new FormEstadisticasInformes();
                fInformes.MdiParent = this;
                fInformes.Show();
                fInformes.Dock = DockStyle.Fill;
            }
            else
            {
                fInformes.Focus();
            }

            DeshabilitaBoton(5);
        }

        public void btBusqueda_Click(object sender, EventArgs e)
        {
          
            fBuscaAvanzada.Show();
            fBuscaAvanzada.Focus();
            DeshabilitaBoton(6);
        }
        
        //Al inicio carga principal
        void CargaPrincipal()
        {
            if (fPrincipal == null)
            {
                fPrincipal = new FormPrincipalAdministrador(this,adm.Correo);
                fPrincipal.MdiParent = this;
                fPrincipal.Show();
                fPrincipal.Dock = DockStyle.Fill;
            }
            else
            {
                fPrincipal.Focus();
            }

            DeshabilitaBoton(1);
        }


        private void lanzarBuscaAvanzada()
        {
            if (fBuscaAvanzada == null)
            {
                fBuscaAvanzada = new FormBuscaAvanzada(1);
                fBuscaAvanzada.MdiParent = this;
                fBuscaAvanzada.Dock = DockStyle.Fill;

                fResultadosBuscaAvanzada = new FormResultadoBuscaAvanzada();
                fResultadosBuscaAvanzada.MdiParent = this;
                fResultadosBuscaAvanzada.Dock = DockStyle.Fill;
                
                fResultadosBuscaAvanzada.Show();                
            }
        }

       

        #endregion

        #region Salida y protección
        /// <summary>
        /// Protege sesión
        /// </summary>
        /// <param name="sender">btProtegeSesionAdmin</param>
        /// <param name="e">click</param>
        private void btProtegeSesionAdmin_Click(object sender, EventArgs e)
        {
            Hide();
            FormBloqueo b = new FormBloqueo(adm.Correo, adm.Contraseña);
            b.ShowDialog();
            Show();
        }

        private void btCerrarSesionAdmin_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea cerrar sesión?", "Cerrar sesión", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                FormLogin l = new FormLogin();
                Visible = false;
                l.ShowDialog();
                l.Close();
            }
        }

        //Saldremos de la aplicacion del todo (sin dejar nada en memoria)
        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea salir de eCampus?", "Salir", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                Application.Exit();
            }
        }
        #endregion

        #region menú herramientas
        private void bloquearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btProtegeSesionAdmin.PerformClick();
        }
        //Nos mostrará quién desde cuándo, y la máquina desde la que está trabajando
        private void infoSesiónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(
                   "Nombre de usuario:\t" + adm.Correo +
                   "\nHora de creación:\t" + fechaSesion.ToString() +
                   "\nNombre del sistema:\t" + System.Environment.MachineName, "Información de sesión", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
        }

        private void FormPadreAdministrador_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }      
  
        private void principalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btPrincipal.PerformClick();
        }     

        private void mensajesToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            btMensajes.PerformClick();
        }

        private void usuariosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btUsuarios.PerformClick();
        }

        private void asignaturasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btAsignaturas.PerformClick();
        }


        private void buscadorAvanzadoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btBusqueda.PerformClick();
        }

        private void modificarPerfilToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormPerfil p = new FormPerfil(adm.Correo);
            p.ShowDialog();
            p.Dispose();
        }

        

        private void bandejaDeEntradaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btMensajes.PerformClick();
            fMensajes.GoToRecibidos();
        }

        private void nuevoMensajeToolStripMenuItem_Click(object sender, EventArgs e)
        {

            btMensajes.PerformClick();
            fMensajes.btNuevo_Click(null, null);
        }

        private void mensajesEnviadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btMensajes.PerformClick();
            fMensajes.GoToEnviados();
        }

        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormAcercaDe p = new FormAcercaDe();
            p.ShowDialog();
            p.Dispose();
        }
        #endregion


        #region basura
        /*
        //Si aprieta a la imagen del profesorCorreo para desbloquear
        private void btDesbloquear_Click(object sender, EventArgs entidadUsuario)
        {
            groupContrasenya.Visible = true;
            btAceptar.Visible = true;
            tbContrasenyaBloqueada.Focus();
            btDesbloquear.Enabled = false;
        }

        //ponemos amarillito al entrar
        private void tbContrasenyaBloqueada_Enter(object sender, EventArgs entidadUsuario)
        {
            tbContrasenyaBloqueada.BackColor = Color.LightGoldenrodYellow;
        }

        //ponemos blanco al entrar
        private void tbContrasenyaBloqueada_Leave(object sender, EventArgs entidadUsuario)
        {
            tbContrasenyaBloqueada.BackColor = Color.White;
        }
        
        //Veamos si desbloquea bien o no
        private void btAceptar_Click(object sender, EventArgs entidadUsuario)
        {
            //Si pone la contraseña correcta
            if (tbContrasenyaBloqueada.Text == contrasenya)
            { 
                //vacio este formulario y lo dejo 
                //preparado para la siguiente ejecucion
                tbContrasenyaBloqueada.Text = "";
                groupContrasenya.Visible = false;
                btAceptar.Visible = false;
                btDesbloquear.Enabled = true;
                //habilito todos los objetos
                //Menú de arriba
                menuStrip1.Enabled = true;
                //Menú de la izquierda
                btPrincipal.Enabled = true;
                btMensajes.Enabled = true;
                btUsuarios.Enabled = true;
                btAsignaturas.Enabled = true;
                btInformes.Enabled = true;
                btBusqueda.Enabled = true;
                btProtegeSesionAdmin.Enabled = true;
                btCerrarSesionAdmin.Enabled = true;

                //habilito panel
                panel1.Visible = true;

                //enciendo el formulario "Sesión Bloqueada"
                panelBloqueado.Visible = false;

                //Muestro Home
                fPrincipal.Visible = true;
           
            }
            //Si no pone la contraseña correcta
            else
                {
                    tbContrasenyaBloqueada.Text = "";
                    groupContrasenya.Visible = false;
                    btAceptar.Visible = false;
                    btDesbloquear.Enabled = true;
                    btDesbloquear.Focus();                    
                }
        }

        private void tbContrasenyaBloqueada_KeyPress(object sender, KeyPressEventArgs entidadUsuario)
        {
            if (entidadUsuario.KeyChar == (char)(Keys.Enter))
            {
                entidadUsuario.Handled = true;
                SendKeys.Send("{TAB}");
            }
        }


        //para que si el profesorCorreo quiere proteger, con su misma contraseña, la sesión
        private void btProtegeSesionAdmin_Click(object sender, EventArgs entidadUsuario)
        {
            //Cierro formularios hijos que hayan abiertos
            foreach (Form F in this.MdiChildren)
            {
                F.Visible = false;
            }

            //deshabilito todos los objetos
            //Menú de arriba
            menuStrip1.Enabled = false;
            //Menú de la izquierda
            btPrincipal.Enabled = false;
            btMensajes.Enabled = false;
            btUsuarios.Enabled = false;
            btAsignaturas.Enabled = false;
            btInformes.Enabled = false;
            btBusqueda.Enabled = false;
            btProtegeSesionAdmin.Enabled = false;
            btCerrarSesionAdmin.Enabled = false;

            //deshabilito panel
            panel1.Visible = false;

            //enciendo el formulario "Sesión Bloqueada"
            panelBloqueado.Visible = true;
            lblUsuarioBloqueado.Text = profesorCorreo;
            panelBloqueado.Location = new Point
            (
                    this.ClientSize.Width / 2 - panelBloqueado.Size.Width / 2,
                    this.ClientSize.Height / 2 - panelBloqueado.Size.Height / 2
            );
            panelBloqueado.Anchor = AnchorStyles.None;
        }
         
        //Saldremos de la Aplicacion del todo (sin dejar nada en memoria)
        private void btSalirAdmin_Click(object sender, EventArgs entidadUsuario)
        {
            if (MessageBox.Show("¿ Desea salir de la Aplicación?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                Application.Exit();
        }
         * */
        #endregion
    }
}


